// nodejs环境
import { fileURLToPath, URL } from 'node:url'
import path from 'path'
import fs from 'fs'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
// 插件，用来嵌入到当前开发服务器中，让他可以提供mock机制
import { viteMockServe } from 'vite-plugin-mock'

import Components from 'unplugin-vue-components/vite'
import { VantResolver } from 'unplugin-vue-components/resolvers'

// import filmProxy from './proxy/film'

// 读取proxy目录地址  -- webpack环境下绝对可以
// vite它要使用esmodule

const proxyDirPath = path.resolve('./proxy')
// 读取此目录下面所有的js文件
const dirs = fs.readdirSync(proxyDirPath)
const proxys = dirs
  .filter(file => file.includes('.js'))
  .map(file => require(`./proxy/${file}`))
  .reduce((prev, item) => Object.assign({}, prev, item), {})

// console.log(require('./proxy/film.js').default)

// https://vitejs.dev/config/
const config = defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    viteMockServe({}),
    Components({
      resolvers: [VantResolver()]
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
    port: 5173,
    // 开发时，可以配置的代理
    // 匹配是模糊匹配
    // /api  /apia
    proxy: {
      // 请求的url地址是以/film开头,走此代理
      // '/film': {
      // https://api.iynn.cn/abc/film/api/v1/getNowPlayingFilmList?cityId=110100&pageNum=1&pageSize=10
      // '/abc': {
      //   target: 'https://api.iynn.cn',
      //   // 请求头Host: localhost:8080 => true => api.iynn.cn
      //   changeOrigin: true,
      //   // 地址重写 -- 发现在/abc不是目标地址中存在的
      //   rewrite: path => path.replace(/^\/abc/, '')
      // }
      // ...filmProxy,
      ...proxys
    }
  }
})

export default config
